package com.wuhen.demo1;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class NewsTitleFragment extends Fragment {
    private boolean isTwoPane;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.news_title_frag,container,false);
        //获得对象
        RecyclerView recyclerView=(RecyclerView)view.findViewById(R.id.news_title_recycler_view);
        //布局管理
        LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(layoutManager);
        //适配器
        NewsAdapter adapter=new NewsAdapter(getNews());
        recyclerView.setAdapter(adapter);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if(getActivity().findViewById(R.id.news_content_layout)!=null)
        {
            isTwoPane=true;
        }
        else
        {
            isTwoPane=false;
        }
    }
    //返回新闻集合
    private List<News>getNews()
    {
        List<News> newsList=new ArrayList<>();
        News news1=new News();
        news1.setTitle("学校概况");
        news1.setContent("西南石油大学是新中国创建的第二所石油本科院校，是一所中央与地方共建、以四川省人民政府管理为主的高等学校。2013年，学校入选\"国家中西部高校基础能力建设工程，成为入选该工程的100所高校之一。2017年9月，入选为国家首批“双一流”世界一流学科建设高校。");
        newsList.add(news1);
        News news2=new News();
        news2.setTitle("学校章程");
        news2.setContent("序 言\n" +
                "\n" +
                "西南石油大学原名为四川石油学院，创建于1958年。1970年更名为西南石油学院；2005年更名为西南石油大学。\n" +
                "\n" +
                "学校秉承“实事求是、艰苦奋斗”的优良传统，倡导“崇尚学术、教书育人、爱校如家、爱生如子”的校园文化，弘扬“为祖国加油、为民族争气”的大学精神，践行“明德笃志、博学创新”的校训，实施“三步走”发展战略，到2020年建成全国知名、行业领先、石油天然气优势突出特色鲜明的高水平大学，到2030年建成全国一流、优势学科世界知名的高水平特色大学，到2058年建成拥有一批著名学科、一批著名专业、一批著名教师、一批著名校友，学界有重大影响、业界有重要地位的百年名校。");
        newsList.add(news2);
        News news3=new News();
        news3.setTitle("统计信息");
        news3.setContent("指标项\n" +
                "\n" +
                "数量\n" +
                "\n" +
                "计量单位\n" +
                "\n" +
                "现有各级各类科研基地（平台）\n" +
                "\n" +
                "151\n" +
                "\n" +
                "个\n" +
                "\n" +
                "其中：国家重点实验室\n" +
                "\n" +
                "1\n" +
                "\n" +
                "个\n" +
                "\n" +
                "      国家“111计划”地方高校学科创新引智基地1个\n" +
                "\n" +
                "1\n" +
                "\n" +
                "个\n" +
                "\n" +
                "      国家工程实验室、研发中心（协作）\n" +
                "\n" +
                "5\n" +
                "\n" +
                "个");
        newsList.add(news3);
        News news4=new News();
        news4.setTitle("历史沿革");
        news4.setContent("  西南石油大学历史沿革\n" +
                "时   间\n" +
                "\n" +
                "校   名\n" +
                "\n" +
                "主管部门\n" +
                "\n" +
                "1958 ～ 1962\n" +
                "\n" +
                "四川石油学院 \n" +
                "\n" +
                " 四川省人民委员会 \n" +
                "\n" +
                "1962 ～ 1970\n" +
                "\n" +
                "四川石油学院 \n" +
                "\n" +
                " 中华人民共和国石油工业部 \n" +
                "\n" +
                "1970 ～ 1978\n" +
                "\n" +
                "西南石油学院 \n" +
                "\n" +
                " 四川省革命委员会 \n" +
                "\n" +
                "1978 ～ 1988\n" +
                "\n" +
                "西南石油学院 \n" +
                "\n" +
                " 中华人民共和国石油工业部 \n" +
                "\n" +
                "1988 ～ 1998\n" +
                "\n" +
                "西南石油学院 \n" +
                "\n" +
                " 中国石油天然气总公司 ");
        newsList.add(news4);
        return newsList;
    }
    //生成不定长的内容 此处为了便于查看效果
    private String getRandomLengthContent(String content)
    {
        Random random=new Random();
        int length=random.nextInt(20)-1;
        StringBuilder builder=new StringBuilder();
        for(int i=0;i<length;i++)
        {
            builder.append(content);
        }
        return builder.toString();
    }
    //内部类 将适配器写成一个内部类 方便访问所在类中的变量 如isTwoPane
    class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder>
    {
        //新闻集合
        private List<News> mNewsList;
        //holder用于存储对象
        class ViewHolder extends RecyclerView.ViewHolder
        {
            TextView newsTitleText;
            //构造方法
            public ViewHolder(View view)
            {
                super(view);
                newsTitleText = (TextView)view.findViewById(R.id.news_title);
            }
        }
        //构造方法
        public NewsAdapter(List<News> newsList)
        {
            mNewsList=newsList;
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            //LayoutInflater用于加载布局 它的from方法构建出LayoutInflater对象 调用inflate方法动态加载一个布局文件 其中需要几个参数 第一个是布局文件id 第二个是添加父布局
            View view =LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item,parent,false);
            final ViewHolder holder=new ViewHolder(view);
            //注册监听事件
            view.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    News news=mNewsList.get(holder.getAdapterPosition());
                    if(isTwoPane)
                    {
                        //如果是双页模式 则刷新内容
                        NewsContentFragment newsContontFragment=(NewsContentFragment)getFragmentManager().findFragmentById(R.id.news_content_fragment);
                        newsContontFragment.refresh(news.getTitle(),news.getContent());
                    }
                    else
                    {
                        //单页模式直接启动NewsContentActivity
                        NewsContentActivity.actionStart(getActivity(),news.getTitle(),news.getContent());
                    }
                }
            });
            return holder;
        }

        //子项滚到屏幕内时候执行 为子项赋值
        @Override
        public void onBindViewHolder(NewsAdapter.ViewHolder holder, int position) {
            News news=mNewsList.get(position);
            holder.newsTitleText.setText(news.getTitle());
        }

        //返回mNewsList大小
        @Override
        public int getItemCount() {
            return mNewsList.size();
        }
    }

}
